home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / ipv6.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  3KB  |  160 lines

  1. #ifndef _IPV6_H
  2. #define _IPV6_H
  3.  
  4. #include <linux/types.h>
  5. #include <linux/in6.h>
  6. #include <asm/byteorder.h>
  7.  
  8. /* The latest drafts declared increase in minimal mtu up to 1280. */
  9.  
  10. #define IPV6_MIN_MTU    1280
  11.  
  12. /*
  13.  *    Advanced API
  14.  *    source interface/address selection, source routing, etc...
  15.  *    *under construction*
  16.  */
  17.  
  18.  
  19. struct in6_pktinfo {
  20.     struct in6_addr    ipi6_addr;
  21.     int        ipi6_ifindex;
  22. };
  23.  
  24.  
  25. struct in6_ifreq {
  26.     struct in6_addr    ifr6_addr;
  27.     __u32        ifr6_prefixlen;
  28.     int        ifr6_ifindex; 
  29. };
  30.  
  31. #define IPV6_SRCRT_STRICT    0x01    /* Deprecated; will be removed */
  32. #define IPV6_SRCRT_TYPE_0    0    /* Deprecated; will be removed */
  33. #define IPV6_SRCRT_TYPE_2    2    /* IPv6 type 2 Routing Header    */
  34.  
  35. /*
  36.  *    routing header
  37.  */
  38. struct ipv6_rt_hdr {
  39.     __u8        nexthdr;
  40.     __u8        hdrlen;
  41.     __u8        type;
  42.     __u8        segments_left;
  43.  
  44.     /*
  45.      *    type specific data
  46.      *    variable length field
  47.      */
  48. };
  49.  
  50.  
  51. struct ipv6_opt_hdr {
  52.     __u8         nexthdr;
  53.     __u8         hdrlen;
  54.     /* 
  55.      * TLV encoded option data follows.
  56.      */
  57. } __attribute__ ((packed));    /* required for some archs */
  58.  
  59. #define ipv6_destopt_hdr ipv6_opt_hdr
  60. #define ipv6_hopopt_hdr  ipv6_opt_hdr
  61.  
  62.  
  63. /*
  64.  *    routing header type 0 (used in cmsghdr struct)
  65.  */
  66.  
  67. struct rt0_hdr {
  68.     struct ipv6_rt_hdr    rt_hdr;
  69.     __u32            reserved;
  70.     struct in6_addr        addr[0];
  71.  
  72. #define rt0_type        rt_hdr.type
  73. };
  74.  
  75. /*
  76.  *    routing header type 2
  77.  */
  78.  
  79. struct rt2_hdr {
  80.     struct ipv6_rt_hdr    rt_hdr;
  81.     __u32            reserved;
  82.     struct in6_addr        addr;
  83.  
  84. #define rt2_type        rt_hdr.type
  85. };
  86.  
  87. /*
  88.  *    home address option in destination options header
  89.  */
  90.  
  91. struct ipv6_destopt_hao {
  92.     __u8            type;
  93.     __u8            length;
  94.     struct in6_addr        addr;
  95. } __attribute__ ((__packed__));
  96.  
  97. /*
  98.  *    IPv6 fixed header
  99.  *
  100.  *    BEWARE, it is incorrect. The first 4 bits of flow_lbl
  101.  *    are glued to priority now, forming "class".
  102.  */
  103.  
  104. struct ipv6hdr {
  105. #if defined(__LITTLE_ENDIAN_BITFIELD)
  106.     __u8            priority:4,
  107.                 version:4;
  108. #elif defined(__BIG_ENDIAN_BITFIELD)
  109.     __u8            version:4,
  110.                 priority:4;
  111. #else
  112. #error    "Please fix <asm/byteorder.h>"
  113. #endif
  114.     __u8            flow_lbl[3];
  115.  
  116.     __be16            payload_len;
  117.     __u8            nexthdr;
  118.     __u8            hop_limit;
  119.  
  120.     struct    in6_addr    saddr;
  121.     struct    in6_addr    daddr;
  122. };
  123.  
  124.  
  125. /* index values for the variables in ipv6_devconf */
  126. enum {
  127.     DEVCONF_FORWARDING = 0,
  128.     DEVCONF_HOPLIMIT,
  129.     DEVCONF_MTU6,
  130.     DEVCONF_ACCEPT_RA,
  131.     DEVCONF_ACCEPT_REDIRECTS,
  132.     DEVCONF_AUTOCONF,
  133.     DEVCONF_DAD_TRANSMITS,
  134.     DEVCONF_RTR_SOLICITS,
  135.     DEVCONF_RTR_SOLICIT_INTERVAL,
  136.     DEVCONF_RTR_SOLICIT_DELAY,
  137.     DEVCONF_USE_TEMPADDR,
  138.     DEVCONF_TEMP_VALID_LFT,
  139.     DEVCONF_TEMP_PREFERED_LFT,
  140.     DEVCONF_REGEN_MAX_RETRY,
  141.     DEVCONF_MAX_DESYNC_FACTOR,
  142.     DEVCONF_MAX_ADDRESSES,
  143.     DEVCONF_FORCE_MLD_VERSION,
  144.     DEVCONF_ACCEPT_RA_DEFRTR,
  145.     DEVCONF_ACCEPT_RA_PINFO,
  146.     DEVCONF_ACCEPT_RA_RTR_PREF,
  147.     DEVCONF_RTR_PROBE_INTERVAL,
  148.     DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
  149.     DEVCONF_PROXY_NDP,
  150.     DEVCONF_OPTIMISTIC_DAD,
  151.     DEVCONF_ACCEPT_SOURCE_ROUTE,
  152.     DEVCONF_MC_FORWARDING,
  153.     DEVCONF_DISABLE_IPV6,
  154.     DEVCONF_ACCEPT_DAD,
  155.     DEVCONF_MAX
  156. };
  157.  
  158.  
  159. #endif /* _IPV6_H */
  160.